home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
tos_updt
/
fmcity
/
palcom
/
auto
/
script
/
apsel.mx
next >
Wrap
Text File
|
1995-04-13
|
26KB
|
872 lines
//--------------------------------------------------------------------------//
// PALCOM V2.1 L10 //
// 自動通信:アクセスポイント選択ダイアログスクリプト //
// //
// CopyRight(C) 1994/10/20 //
// FUJITSU PERSONAL COMPUTER SYSTEMS LIMITED //
// written by C-cube Soft T.Nakamura //
//--------------------------------------------------------------------------//
event @OPEN.EXTERN {
AUTO.setDialogReturn( -1 );
//--- 登録アクセスポイントファイルのオープン ---//
$TrdId = #FALSE;
sys.global( $TrdId );
$TrdId = trd.init( 9120, -1 );
$Path = str.join([$$DIR.STANDARD, "PUBLIC\\APUSER.TRD"],"" );
sys.global( $Path );
sys.global( $ApList );
sys.global( $ApDispList );
$ApList = [];
$ApDispList = [];
if( file.exist( $Path ) == #TRUE ) {
trd.load( $TrdId, $Path );
//--- リストデータの設定 ---//
$ApList = AUTO.getAPlist( $TrdId, -1 ); // AP のリスト設定
$ApDispList = Auto.getAPdispList( -1 ); // 表示文字列リストの設定
}
if( list.size( $ApList ) == 0 ) {
//--- アクセスポイントが1件も登録されていない場合は ---//
//--- 直接登録ダイアログを表示する ---//
if( Auto.apSel() == -1 ) {
AUTO.setDialogReturn( 0 );
return;
}
$$USER.DEFINED.9 = 1;
}
//--- リストの反転項目番号の取得 ---//
$cnt = 1;
$defList = [1];
foreach( $a, $ApList ) {
if( list.get1st( list.getLast( $a )) == $$USER.DEFINED.9 ) {
$defList = [$cnt];
exit;
}
$cnt = $cnt + 1;
}
//--- ボタンの設定 ---//
$newBtnId = dialog.makeButton( 1, "アクセスポイントの作成", 0, 0 );
$selBtnId = dialog.makeButton( 1, "登録", 0, 0 );
$delBtnId = dialog.makeButton( 1, "削除", 0, 0x007F );
$edtBtnId = dialog.makeButton( 1, "編集", 0, 0 );
$setBtnId = dialog.makeButton( 1, "設定", 0, 0x8012 );
$canBtnId = dialog.makeButton( 1, "取消", 0, 0x8011 );
//--- ダイアログリストの設定 ---//
$dialogList = ["アクセスポイントの設定", 0, -1, -1, $setBtnId,
["", 1028, [76,10,0], $ApDispList, $defList ],
["", $canBtnId, [0], [""], [""] ],
["", $setBtnId, [0], [""], [""] ],
["", $edtBtnId, [0], [""], [""] ],
["", $delBtnId, [0], [""], [""] ],
["", $selBtnId, [0], [""], [""] ],
["", $newBtnId, [0], [""], [""] ]];
$exitFlg = 0;
$uFlg = #FALSE;
loop {
//--- ダイアログの表示 ---//
sys.pushCursor( 80 );
dialog.open( $dialogList );
sys.popCursor();
//--- ボタンの処理 ---//
$btnId = list.get1st( $$DIALOG.RETURN );
$no = list.get1st( list.getNth( $$DIALOG.RETURN, 2 ));
//--- 選択されていなくては実行出来ない物のチェック ---//
if(( $btnId == $delBtnId )||( $btnId == $edtBtnId )||
( $btnId == $setBtnId )) {
if( $no == -1 ) {
continue;
}
}
//--- 押されたボタンに応じた処理を実行 ---//
$no2 = #FALSE;
table( $btnId ) {
else { $ret = -1; $exitFlg = 1; }
$canBtnId { $ret = 0; $exitFlg = 1; } // 取消
$newBtnId { $no2 = Auto.apEdt( -1 ); } // 作成
$selBtnId { $no2 = Auto.apSel(); } // 登録
$delBtnId { Auto.apDel( $no ); } // 削除
$edtBtnId { $no2 = Auto.apEdt( $no ); } // 編集
$setBtnId { // 設定
$$USER.DEFINED.9 = list.get1st( list.getLast(
list.getNth( $ApList, $no )));
$ret = 1;
$exitFlg = 1;
}
}
//--- ループ終了チェック ---//
if( $exitFlg == 1 ) {
exit;
}
//--- リスト項目の反転項目設定 ---//
if( $no2 == #FALSE ) {
$no2 = $no;
} else {
$no = $no2;
}
if( $no > list.size( $ApList )) {
$no = list.size( $ApList );
}
list.del1st( $defList );
list.put1st( $defList, $no );
}
//--- 後始末 ---//
dialog.delButton( $newBtnId );
dialog.delButton( $selBtnId );
dialog.delButton( $delBtnId );
dialog.delButton( $edtBtnId );
dialog.delButton( $setBtnId );
dialog.delButton( $canBtnId );
if( data.getType( $ListTrdId ) == #NUMBER ) {
trd.end( $ListTrdId );
}
sys.local( $ListTrdId );
trd.end( $TrdId );
$TrdId = #FALSE;
sys.local( $ApList );
sys.local( $ApDispList );
AUTO.setDialogReturn( $ret );
return;
}
event @CLOSE.EXTERN {
if( data.getType( $TrdId ) == #NUMBER ) {
trd.end( $TrdId );
}
if( data.getType( $ListTrdId ) == #NUMBER ) {
trd.end( $ListTrdId );
}
return;
}
event @ERROR {
local.errorFunc();
event.mainLoop();
}
//--------------------------------------------//
//--- アクセスポイント表示文字列の取得 ---//
//--------------------------------------------//
function Auto.getAPdispList(
$no ) // 対象要素番号(-1:ALL)
{
$spc = " ";
$cnt = 1;
$strList = [];
foreach( $data, $ApList ) {
if(( $no != -1 )&&( $cnt != $no )) {
$cnt = $cnt + 1;
continue;
}
$list = [];
//--- 市外局番設定 ---//
$str = list.getNth( $data, 2 );
if( $str != "" ) {
list.putLast( $list, $str );
list.putLast( $list, "-" );
}
//--- 電話番号設定 ---//
$str = list.getNth( $data, 6 );
list.putLast( $list, $str );
//--- 市外局番と電話番号を繋げる ---//
$str = str.join( $list, "" );
$len = str.length( $str );
$list = [" ", $str, " "];
if( $len < 16 ) {
list.putLast( $list, str.left( $spc, 16 - $len ));
}
//--- アクセスポイント名の設定 ---//
$str = list.getNth( $data, 1 );
$len = str.length( $str );
list.putLast( $list, $str );
if( $len < 12 ) {
list.putLast( $list, str.left( $spc, 12 - $len ));
}
//--- ボーレート設定 ---//
$wkList = list.getNth( $data, 4 );
$str = list.getNth( $wkList, 1 );
if( list.size( $wkList ) > 1 ) {
$str = str.join([$str, list.getNth( $wkList, 2 )], "/" );
}
$len = str.length( $str );
if( $len < 12 ) {
list.putLast( $list, str.left( $spc, 12 - $len ));
}
list.putLast( $list, $str );
list.putLast( $list, "bps " );
//--- 属性設定 ---//
$wkList = list.getNth( $data, 5 );
$str = " ";
foreach( $a, $wkList ) {
if( $a == "MNP" ) {
$str = "MNP ";
exit;
}
}
list.putLast( $list, $str );
$str = " ";
foreach( $a, $wkList ) {
if( $a == "INS-C" ) {
$str = "INS-C ";
exit;
}
}
list.putLast( $list, $str );
$str = " ";
foreach( $a, $wkList ) {
if( $a == "CLASS10" ) {
$str = "移動体通信 ";
exit;
}
}
list.putLast( $list, $str );
//--- ROAD種別の設定 ---//
list.putLast( $list, list.getNth( $data, 3 ));
list.putLast( $list, " " );
//--- 1行分の文字列作成&設定 ---//
list.putLast( $strList, str.join( $list, "" ));
if( $cnt == $no ) {
exit;
}
$cnt = $cnt + 1;
}
return( $strList );
}
//----------------------------------//
//--- アクセスポイントの編集 ---//
//----------------------------------//
function Auto.apEdt(
$selNo ) // 対象要素番号(-1:NEW)
{
//--- 現在の設定の取得 ---//
if( $selNo == -1 ) { // 新規の場合
$title = "アクセスポイントの作成";
$setBtnTitle = "登録";
$town = [""];
$tel1 = [""];
$tel2 = [""];
$kind = [4];
} else { // 既存のデータの場合
$title = "アクセスポイントの編集";
$setBtnTitle = "設定";
$apList = list.getNth( $ApList, $selNo );
$town = [list.getNth( $apList, 1 )];
$tel1 = [list.getNth( $apList, 2 )];
$tel2 = [list.getNth( $apList, 6 )];
$kind = [list.getNth( list.getLast( $apList ), 2 )];
}
$warnDlgTitle = str.join(["━━━━━", $title, "━━━━━"]," " );
//--- 最大登録件数のチェック ---//
if(( $selNo == -1 )&&( list.size( $ApList ) == 64 )) {
Auto.apEdtWarn( $warnDlgTitle, 2 );
return( #FALSE );
}
//--- ボタンの設定 ---//
$setBtnId = dialog.makeButton( 1, $setBtnTitle, 0, 0x8012 );
$canBtnId = dialog.makeButton( 1, "取消", 0, 0x8011 );
//--- ダイアログリストの設定 ---//
$dialogList = [$title, 0, -1, -1, $setBtnId,
["アクセスポイントの市町村名 ", 1025, [12,0], [""],$town],
[" 市外局番 ", 1025, [ 6,0], [""],$tel1],
[" 電話番号 ", 1025, [ 9,0], [""],$tel2],
["", 1024, [0], [""], [""]],
["アクセスポイントの種類 ", 1030, [1],
["ROAD1 : 300bps ",
"ROAD1 : 1200bps ",
"ROAD1 : 2400bps (MNP) ",
"ROAD2 : 1200/2400bps (MNP) ",
"ROAD3 : 9600bps (MNP) ",
"ROAD3 : 9600bps (INS-C) ",
"ROAD3 : 9600bps (移動体通信)",
"ROAD4 : 9600/14400bps (MNP) "], $kind],
["", 1024, [0], [""], [""]],
["", $canBtnId, [0], [""], [""]],
["", $setBtnId, [0], [""], [""]]
];
//--- ダイアログの表示 ---//
loop {
DIALOG_OPEN:
// $saveXsize = dialog.getDefaultXSize();
// dialog.setDefaultXSize( 300 );
sys.pushCursor( 80 );
dialog.open( $dialogList );
sys.popCursor();
// dialog.setDefaultXSize( $saveXsize );
//--- 取消の場合はそのまま終了 ---//
$btnNo = list.get1st( $$DIALOG.RETURN );
if( $btnNo == $canBtnId ) {
exit;
}
//--- データ保存 ---//
list.delNth( list.getNth( $dialogList, 6 ), 5 );
list.putNth( list.getNth( $dialogList, 6 ), 4,
list.getNth( $$DIALOG.RETURN, 2 ));
list.delNth( list.getNth( $dialogList, 7 ), 5 );
list.putNth( list.getNth( $dialogList, 7 ), 4,
list.getNth( $$DIALOG.RETURN, 3 ));
list.delNth( list.getNth( $dialogList, 8 ), 5 );
list.putNth( list.getNth( $dialogList, 8 ), 4,
list.getNth( $$DIALOG.RETURN, 4 ));
list.delNth( list.getNth( $dialogList, 10 ), 5 );
list.putNth( list.getNth( $dialogList, 10 ), 4,
list.getNth( $$DIALOG.RETURN, 6 ));
//--- 入力されたデータの正当性チェック ---//
if( list.get1st( list.getNth($$DIALOG.RETURN, 3 )) != "" ) {
$list = str.split(list.get1st(list.getNth($$DIALOG.RETURN,3)),"");
if( list.get1st( $list ) != "0" ) { // 市外局番の先頭は'0'固定
Auto.apEdtWarn( $warnDlgTitle, 0 );
continue;
}
foreach( $a, $list ) { // 市外局番は半角数字のみ
if(( $a < "0" )||( $a > "9" )) {
Auto.apEdtWarn( $warnDlgTitle, 0 );
goto DIALOG_OPEN;
}
}
}
$list = str.split( list.get1st( list.getNth($$DIALOG.RETURN, 4)), "" );
foreach( $a, $list ) { // 電話番号は半角数字と"-"のみ
if((( $a < "0" )||( $a > "9" ))&&( $a != "-" )) {
Auto.apEdtWarn( $warnDlgTitle, 1 );
goto DIALOG_OPEN;
}
}
exit;
}
//--- 設定処理 ---//
if( $btnNo == $canBtnId ) { // 取消の場合
dialog.delButton( $setBtnId );
dialog.delButton( $canBtnId );
return( #FALSE );
}
//--- ボタン削除 ---//
dialog.delButton( $setBtnId );
dialog.delButton( $canBtnId );
if( $selNo == -1 ) {
//--- 新規の場合は未使用のIDを探す ---//
$no = 1;
loop {
$retList = trd.checkList( $TrdId, [$no, -2] );
if( list.get1st( $retList ) == 0 ) {
exit;
}
$no = $no + 1;
}
} else {
//--- 既存の物の場合は、一度グループを削除する ---//
$no = list.get1st( list.getNth( $apList, 7 ));
trd.delData( $TrdId, [$no, -2] );
}
//--- データを吐き出す ---//
$kind = list.get1st( list.getNth( list.getNth( $dialogList, 10 ), 5 ));
$str = list.get1st( list.getNth( $$DIALOG.RETURN, 2 ));
$str = str.join([$str, "\t",
list.get1st( list.getNth( $$DIALOG.RETURN,3 ))], "" );
trd.setData( $TrdId, [$no, -2], $str );
table( $kind ) {
1 { $str = "ROAD1"; }
2 { $str = "ROAD1"; }
3 { $str = "ROAD1"; }
4 { $str = "ROAD2"; }
5 { $str = "ROAD3"; }
6 { $str = "ROAD3"; }
7 { $str = "ROAD3"; }
8 { $str = "ROAD4"; }
}
trd.setData( $TrdId, [$no, $kind, -2], $str );
table( $kind ) {
1 { $str = "300"; }
2 { $str = "1200"; }
3 { $str = "2400"; }
4 { $str = "1200,2400"; }
5 { $str = "9600"; }
6 { $str = "9600"; }
7 { $str = "9600"; }
8 { $str = "9600,14400"; }
}
trd.setData( $TrdId, [$no, $kind, 1], $str );
table( $kind ) {
1 { $str = ""; }
2 { $str = ""; }
3 { $str = "MNP"; }
4 { $str = "MNP"; }
5 { $str = "MNP,V.32"; }
6 { $str = "INS-C"; }
7 { $str = "MNP,CLASS10"; }
8 { $str = "MNP,V.42"; }
}
trd.setData( $TrdId, [$no, $kind, 2], $str );
$str = list.get1st( list.getNth( $$DIALOG.RETURN, 4 ));
trd.setData( $TrdId, [$no, $kind, 3], $str );
//--- 内容のセーブ ---//
trd.save( $TrdId, $Path );
//--- リストに結果を反映する ---//
if( $selNo == -1 ) {
$wkList = AUTO.getAPlist( $TrdId, $no );
list.putLast( $ApList, list.get1st( $wkList ));
$selNo = list.size( $ApList );
$wkList = Auto.getAPdispList( $selNo );
list.putLast( $ApDispList, list.get1st( $wkList ));
} else {
$wkList = AUTO.getAPlist( $TrdId, $no );
list.delNth( $ApList, $selNo );
list.putNth( $ApList, $selNo - 1, list.get1st( $wkList ));
$wkList = Auto.getAPdispList( $selNo );
list.delNth( $ApDispList, $selNo );
list.putNth( $ApDispList, $selNo - 1, list.get1st( $wkList ));
}
return( $selNo );
}
//--------------------------------------------------//
//--- アクセスポイントの編集エラーダイアログ ---//
//--------------------------------------------------//
function Auto.apEdtWarn(
$title, // ダイアログタイトル
$no ) // エラー番号
{
table( $no ) {
0 {
$msg = " 市外局番に誤りがあります。 ";
}
1 {
$msg = " 電話番号に誤りがあります。 ";
}
2 {
$msg = " 最大登録数を超えるため、登録出来ません。 ";
}
}
$saveXsize = dialog.getDefaultXSize();
dialog.setDefaultXSize( 300 );
sys.pushCursor( 80 );
dialog.ask([$title,"",$msg,""],["確認"]);
sys.popCursor();
dialog.setDefaultXSize( $saveXsize );
}
//----------------------------------//
//--- アクセスポイントの削除 ---//
//----------------------------------//
function Auto.apDel(
$no ) // 削除するAPデータの要素番号
{
$apList = list.getNth( $ApList, $no );
//--- AP名を加工する ---//
$list = ["【"];
list.putLast( $list, list.getNth( $apList, 1 ));
list.putLast( $list, " " );
$wkList = list.getNth( $apList, 4 );
list.putLast( $list, list.get1st( $wkList ));
if( list.size( $wkList ) > 1 ) {
list.putLast( $list, "/" );
list.putLast( $list, list.getNth( $wkList, 2 ));
}
list.putLast( $list, "bps " );
list.putLast( $list, list.getNth( $apList, 3 ));
list.putLast( $list, " : " );
if( list.getNth( $apList, 2 ) != "" ) {
list.putLast( $list, list.getNth( $apList, 2 ));
list.putLast( $list, "-" );
}
list.putLast( $list, list.getNth( $apList, 6 ));
list.putLast( $list, "】" );
$apName = str.join( $list, "" );
//--- ダイアログ表示 ---//
sys.pushCursor( 80 );
$saveXsize = dialog.getDefaultXSize();
dialog.setDefaultXSize( 360 );
$ret = dialog.ask([
"━━━━━━━ アクセスポイントの削除 ━━━━━━━",
"",
$apName,
"",
" のアクセスポイントを削除します。",
""],
["取消","実行"] );
sys.popCursor();
dialog.setDefaultXSize( $saveXsize );
//--- 各種処理 ---//
if( $ret == 0 ) { // 取消の場合
return( #FALSE );
}
//--- ファイルとリストの両方のデータを削除 ---//
trd.delData( $TrdId, [list.get1st( list.getNth( $apList, 7 )), -2] );
list.delNth( $ApList, $no );
list.delNth( $ApDispList, $no );
//--- ファイルの更新 ---//
trd.save( $TrdId, $Path );
return( #TRUE );
}
//----------------------------------//
//--- アクセスポイントの登録 ---//
//----------------------------------//
function Auto.apSel()
{
//--- 最大登録件数のチェック ---//
if( list.size( $ApList ) == 64 ) {
Auto.apEdtWarn( "━━━━━ アクセスポイントの登録 ━━━━━", 2 );
return( #FALSE );
}
//--- アクセスポイント一覧ファイルのオープン ---//
if( data.getType( $ListTrdId ) != #NUMBER ) {
dialog.openProg([[],
"",
" アクセスポイント一覧を読み込み中です ",
"",
[]], "", #FALSE );
$ListTrdId = trd.init( 1000 * 20, -1 );
sys.global( $ListTrdId );
$path = str.join([$$DIR.STANDARD, "PUBLIC\\APLIST.TRD"],"" );
trd.load( $ListTrdId, $path );
dialog.close();
}
//--- 地域選択ダイアログの表示 ---//
$apList = Auto.apSelArea( $ListTrdId );
if( $apList == #FALSE ) { // 取り消された
return( #FALSE );
}
//--- 登録アクセスポイントファイルの未使用IDを検索 ---//
$no = 1;
loop {
$retList = trd.checkList( $TrdId, [$no, -2] );
if( list.get1st( $retList ) == 0 ) {
exit;
}
$no = $no + 1;
}
$kind = list.getLast( $apList );
//--- 登録アクセスポイントファイルにデータを吐き出す ---//
trd.setData( $TrdId, [$no, -2], list.getNth( $apList, 1 ));
trd.setData( $TrdId, [$no, $kind, -2], list.getNth( $apList, 2 ));
trd.setData( $TrdId, [$no, $kind, 1], list.getNth( $apList, 3 ));
trd.setData( $TrdId, [$no, $kind, 2], list.getNth( $apList, 5 ));
trd.setData( $TrdId, [$no, $kind, 3], list.getNth( $apList, 4 ));
trd.save( $TrdId, $Path );
//--- リストに結果を反映する ---//
$wkList = AUTO.getAPlist( $TrdId, $no );
list.putLast( $ApList, list.get1st( $wkList ));
$no = list.size( $ApList );
$wkList = Auto.getAPdispList( $no );
list.putLast( $ApDispList, list.get1st( $wkList ));
return( $no );
}
//------------------------------------//
//--- 地域選択ダイアログの処理 ---//
//------------------------------------//
function Auto.apSelArea(
$trdId ) // AP一覧ファイルのTRD識別子
{
//--- トップレベルのグループを読み込む ---//
$areaList = [];
$tagList = [];
$tag = [-5,-2];
loop {
$retList = trd.getData( $trdId, $tag );
if( list.get1st( $retList ) == 0 ) {
exit;
}
list.putLast( $areaList, list.getNth( $retList, 2 ));
list.putLast( $tagList, list.getNth( list.getLast( $retList ), 1 ));
$tag = [];
}
//--- ボタンの設定 ---//
$setBtnId = dialog.makeButton( 1, "選択", 0, 0x8012 );
$canBtnId = dialog.makeButton( 1, "取消", 0, 0x8011 );
//--- ダイアログリストの設定 ---//
$defList = [1];
$dialogList = ["アクセスポイントの市外局番選択", 0, -1, -1, $setBtnId,
["", 1028, [40,9,0], $areaList, $defList],
["", $canBtnId, [0], [""], [""] ],
["", $setBtnId, [0], [""], [""] ]
];
//--- ダイアログの表示 ---//
DIALOG_OPEN:
$saveXsize = dialog.getDefaultXSize();
dialog.setDefaultXSize( 300 );
sys.pushCursor( 80 );
dialog.open( $dialogList );
sys.popCursor();
dialog.setDefaultXSize( $saveXsize );
//--- 取消の場合 ---//
if( list.get1st( $$DIALOG.RETURN ) == $canBtnId ) {
dialog.delButton( $setBtnId );
dialog.delButton( $canBtnId );
return( #FALSE );
}
//--- 選択された項目に対応するタグ番号を取得 ---//
$no = list.get1st( list.getNth( $$DIALOG.RETURN, 2 ));
if( $no == 0 ) { // 選択されていない
goto DIALOG_OPEN;
}
list.del1st( $defList );
list.put1st( $defList, $no );
//--- アクセスポイント選択その1ダイアログの表示 ---//
$ret = Auto.apSelAP1( $ListTrdId, list.getNth( $tagList, $no ));
if( $ret == #FALSE ) { // 取り消された
goto DIALOG_OPEN;
}
//--- ボタンの削除 ---//
dialog.delButton( $setBtnId );
dialog.delButton( $canBtnId );
return( $ret );
}
//--------------------------------------------//
//--- 登録アクセスポイントの選択その1 ---//
//--------------------------------------------//
function Auto.apSelAP1(
$trdId, // AP一覧ファイルのTRD識別子
$tagNo ) // 対象タググループNo.
{
$spc = " ";
$tagTop = [$tagNo, -5, -2];
$tagList = [];
$areaList = [];
loop {
$retList = trd.getData( $trdId, $tagTop );
if( list.get1st( $retList ) == 0 ) {
exit;
}
//--- アクセスポイント名と市外局番の取り出し ---//
$apStr = list.getNth( $retList, 2 );
$strList = str.split( $apStr, "\t" );
$apName = list.getNth( $strList, 1 );
$townNo = list.getNth( $strList, 2 );
//--- 対象のタグ番号の設定 ---//
list.putLast( $tagList, list.getNth( list.getLast( $retList ), 2 ));
//--- リスト表示文字列の設定 ---//
$list = [$townNo];
$len = str.length( $townNo );
if( $len < 28 ) {
list.putLast( $list, str.left( $spc, 28 - $len ));
}
$len = str.length( $apName );
if( $len < 12 ) {
list.putLast( $list, str.left( $spc, 12 - $len ));
}
list.putLast( $list, $apName );
list.putLast( $areaList, str.join( $list, "" ));
$tagTop = [];
}
//--- ボタンの設定 ---//
$setBtnId = dialog.makeButton( 1, "選択", 0, 0x8012 );
$canBtnId = dialog.makeButton( 1, "取消", 0, 0x8011 );
//--- ダイアログリストの設定 ---//
$defList = [1];
$dialogList = ["アクセスポイントの選択", 0, -1, -1, $setBtnId,
["", 1028, [40,10,0], $areaList, $defList],
["", $canBtnId, [0], [""], [""] ],
["", $setBtnId, [0], [""], [""] ]
];
//--- ダイアログの表示 ---//
DIALOG_OPEN:
sys.pushCursor( 80 );
dialog.open( $dialogList );
sys.popCursor();
//--- 取消の場合 ---//
if( list.get1st( $$DIALOG.RETURN ) == $canBtnId ) {
dialog.delButton( $setBtnId );
dialog.delButton( $canBtnId );
return( #FALSE );
}
//--- 選択された項目に対応するデータリストを返す ---//
$no = list.get1st( list.getNth( $$DIALOG.RETURN, 2 ));
if( $no == 0 ) { // 選択されていない
goto DIALOG_OPEN;
}
list.del1st( $defList );
list.put1st( $defList, $no );
//--- アクセスポイント選択その2ダイアログの表示 ---//
$ret = Auto.apSelAP2( $ListTrdId,[$tagNo,list.getNth($tagList,$no),-2] );
if( $ret == #FALSE ) { // 取り消された
goto DIALOG_OPEN;
}
//--- ボタンの削除 ---//
dialog.delButton( $setBtnId );
dialog.delButton( $canBtnId );
return( $ret );
}
//--------------------------------------------//
//--- 登録アクセスポイントの選択その2 ---//
//--------------------------------------------//
function Auto.apSelAP2(
$trdId, // AP一覧ファイルのTRD識別子
$tagTop ) // 対象グループタグ
{
//--- まずはデータの読み込み ---//
$apList1 = [];
$apList2 = [];
$retList = trd.getData( $trdId, $tagTop );
if( list.get1st( $retList ) == 0 ) {
exit;
}
//--- アクセスポイント名と市外局番の取り出し ---//
$apStr = list.getNth( $retList, 2 );
$strList = str.split( $apStr, "\t" );
$apName = list.getNth( $strList, 1 );
$townNo = list.getNth( $strList, 2 );
//--- 詳細情報の読み込み ---//
$tagSub = list.getLast( $retList );
list.delNth( $tagSub, 3 );
list.putNth( $tagSub, 2, -6 );
loop {
$retList = trd.getData( $trdId, $tagSub );
if( list.get1st( $retList ) == 0 ) {
exit;
}
//--- 詳細情報を分解して各要素毎のリストを作る ---//
$list = str.split( list.getNth( $retList, 2 ), "\t" );
list.put1st( $list, $apStr );
if( list.size( $list ) < 5 ) {
list.putLast( $list, "" );
}
list.putLast( $list, list.getNth( list.getLast( $retList ), 3 ));
list.putLast( $apList1, $list );
$strList = str.split( list.getNth( $retList, 2 ), "\t" );
$list = [];
list.putLast( $list, $apName );
list.putLast( $list, $townNo );
list.putLast( $list, list.getNth( $strList, 1 ));
list.putLast( $list, str.split( list.getNth( $strList, 2 ), "," ));
if( list.size( $strList ) > 3 ) {
list.putLast( $list,str.split(list.getNth($strList, 4), "," ));
} else {
list.putLast( $list, [] );
}
list.putLast( $list, list.getNth( $strList, 3 ));
list.putLast( $list, 0 );
list.putLast( $apList2, $list );
$tagSub = [];
}
//--- リストに表示する文字列を取得する ---//
$apListSave = $ApList;
$ApList = $apList2;
$dispList = Auto.getAPdispList( -1 );
$ApList = $apListSave;
dialog.close();
//--- ボタンの設定 ---//
$setBtnId = dialog.makeButton( 1, "選択", 0, 0x8012 );
$canBtnId = dialog.makeButton( 1, "取消", 0, 0x8011 );
//--- ダイアログリストの設定 ---//
$dialogList = ["アクセスポイントの選択", 0, -1, -1, $setBtnId,
["", 1028, [76,10,0], $dispList, [1]],
["", $canBtnId, [0], [""], [""]],
["", $setBtnId, [0], [""], [""]]
];
//--- ダイアログの表示 ---//
DIALOG_OPEN:
sys.pushCursor( 80 );
dialog.open( $dialogList );
sys.popCursor();
//--- 取消の場合 ---//
if( list.get1st( $$DIALOG.RETURN ) == $canBtnId ) {
dialog.delButton( $setBtnId );
dialog.delButton( $canBtnId );
return( #FALSE );
}
//--- 選択された項目に対応するデータリストを返す ---//
$no = list.get1st( list.getNth( $$DIALOG.RETURN, 2 ));
if( $no == 0 ) { // 選択されていない
goto DIALOG_OPEN;
}
//--- ボタンの削除 ---//
dialog.delButton( $setBtnId );
dialog.delButton( $canBtnId );
return( list.getNth( $apList1, $no ));
}